\section{Systementwurf}

\subsection{Klassendiagramm}
\includepdf[pages=-, landscape]{./PDF/KD.pdf}
\subsection{Komponentenübersicht}
\begin{itemize}
\item Klasse ''Object'': Dient als gemeinsame Basisklasse aller Klassen.

\item Klasse ''SingletonBase'': Ein Klasse die das Singleton Pattern implementiert. Von ihr abgeleitete Klassen sind ebenfalls singletons.
\item Klasse ''PictureManager'': Bietet Funktionen zum Verwalten von Bildern. Implementiert das Singleton-Pattern (erbt von SingletonBase)
\item Klasse ''Picture'': Repräsentiert ein Bild. Verwaltet eine Liste von Shapes.
\item Klasse ''Shape'': Beschreibt die Position und die Farbe eines graphischen Objekts. Diese Objekte sind nicht kopierbar oder zuweisbar.
\item Klasse ''Circle'': Beschreibt einen Kreis mit Hilfe des Radius.
\item Klasse ''Rectangle'': Beschreibt ein Rechteck mit Hilfe der Breite und Höhe.
\item Klasse ''FilledCircle'': Beschreibt einen Kreis, der mit der angegebenen Farbe aus Shape gefüllt wird.
\item Klasse ''TranspCircle'': Beschreibt einen Kreis, der keine Füllung hat, sondern nur einen Rand.
\item Klasse ''FilledRectangle'': Beschreibt ein Rechteck, das mit der angegebenen Farbe aus Shape gefüllt wird.
\item Klasse ''TranspRectangle'': Beschreibt ein Rechteck, das keine Füllung hat, sondern nur einen Rand.
\item Klasse ''IShapeFactory'': Interface für konkrete Factories.
\item Klasse ''FilledShapeFactory'': Erzeugt gefüllte Objekte. (FilledCircle und FilledRectangle)
\item Klasse ''TranspShapeFactory'': Erzeugt nicht gefüllte Objekte (TranspCircle und TranspRectangle).
\end{itemize}